home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / Dev / Oberon / source / OC / OCPrefs.mod < prev    next >
Text File  |  1995-06-29  |  4KB  |  181 lines

  1. (*************************************************************************
  2.  
  3.      $RCSfile: OCPrefs.mod $
  4.   Description: Preferences editor for OC.
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 2.1 $
  8.       $Author: fjc $
  9.         $Date: 1995/06/15 18:22:31 $
  10.  
  11.   Copyright © 1995, Frank Copeland
  12.   This module forms part of the OC program
  13.   See OC.doc for conditions of use and distribution
  14.  
  15.   Log entries are at the end of the file.
  16.  
  17. *************************************************************************)
  18.  
  19. <* STANDARD- *>
  20.  
  21. MODULE OCPrefs;
  22.  
  23. IMPORT
  24.   SYS := SYSTEM, Kernel, Errors, e := Exec, u := Utility, d := Dos,
  25.   OCM, s := OCPrefsStrings, wb := Workbench, OCPrefsGUI;
  26.  
  27. CONST
  28.  
  29.   CopyrightStr = "Copyright © 1995 Frank Copeland\n";
  30.  
  31. (* -- Command line template and parsing ------------------------------- *)
  32.  
  33. CONST
  34.  
  35.   template = "FROM";
  36.  
  37.   optFROM      = 0;
  38.   optCount     = 1;
  39.  
  40. VAR
  41.  
  42.   rdArgs : d.RDArgsPtr;
  43.   args : ARRAY optCount OF SYS.LONGWORD;
  44.  
  45.   (* These are filled in by ParseArgs() *)
  46.  
  47.   from : e.LSTRPTR;
  48.  
  49. (*
  50. ** Lock on starting directory when run from Workbench.
  51. *)
  52.  
  53. VAR
  54.   startDir : d.FileLockPtr;
  55.  
  56. (*------------------------------------*)
  57. PROCEDURE* Cleanup (VAR rc : LONGINT);
  58.  
  59.   VAR oldDir : d.FileLockPtr;
  60.  
  61. BEGIN (* Cleanup *)
  62.   IF rdArgs # NIL THEN
  63.     d.FreeArgs (rdArgs);
  64.     d.FreeDosObject (d.rdArgs, rdArgs);
  65.     rdArgs := NIL
  66.   END;
  67.   s.CloseCatalog();
  68.   IF Kernel.fromWorkbench THEN oldDir := d.CurrentDir (startDir) END
  69. END Cleanup;
  70.  
  71. (*------------------------------------*)
  72. PROCEDURE Init ();
  73.  
  74. BEGIN (* Init *)
  75.   Kernel.SetCleanup (Cleanup);
  76.   s.OpenCatalog (NIL, "");
  77.  
  78.   rdArgs := d.AllocDosObjectTags (d.rdArgs, u.end);
  79.   IF (rdArgs = NIL) THEN
  80.     OCPrefsGUI.Notice (s.msg15); HALT (d.warn)
  81.   END
  82. END Init;
  83.  
  84. (*------------------------------------*)
  85. PROCEDURE ParseArgs ();
  86.  
  87.   VAR string : e.LSTRPTR; ignore : BOOLEAN;
  88.  
  89. BEGIN (* ParseArgs *)
  90.   from := SYS.VAL (e.LSTRPTR, args [optFROM]);
  91.   IF from = NIL THEN ignore := OCM.LoadPrefs ("OC.prefs")
  92.   ELSE ignore := OCM.LoadPrefs (from^)
  93.   END
  94. END ParseArgs;
  95.  
  96. (*------------------------------------*)
  97. PROCEDURE Main ();
  98.  
  99.   (*------------------------------------*)
  100.   PROCEDURE WbArgs ();
  101.  
  102.     VAR
  103.       wbStartup : wb.WBStartupPtr;
  104.       wbArg     : wb.WBArg;
  105.  
  106.   BEGIN (* WbArgs *)
  107.     wbStartup := SYS.VAL (wb.WBStartupPtr, Kernel.WBenchMsg);
  108.     IF wbStartup.numArgs > 2 THEN OCPrefsGUI.Notice (s.msg14); HALT (d.warn) END;
  109.  
  110.     wbArg := wbStartup.argList [wbStartup.numArgs-1];
  111.     startDir := d.CurrentDir (wbArg.lock);
  112.  
  113.     IF wbStartup.numArgs = 2 THEN
  114.       args [optFROM] := wbArg.name
  115.     END
  116.   END WbArgs;
  117.  
  118.   (*------------------------------------*)
  119.   PROCEDURE CliArgs ();
  120.     VAR ignore : BOOLEAN;
  121.   BEGIN (* CliArgs *)
  122.     IF d.OldReadArgs (template, args, rdArgs) = NIL THEN
  123.       ignore := d.PrintFault (d.IoErr(), "");
  124.       HALT (d.warn)
  125.     END
  126.   END CliArgs;
  127.  
  128. BEGIN (* Main *)
  129.   IF Kernel.fromWorkbench THEN WbArgs()
  130.   ELSE CliArgs()
  131.   END;
  132.   ParseArgs();
  133.   OCPrefsGUI.Open;
  134. END Main;
  135.  
  136. BEGIN (* OCPrefs *)
  137.   ASSERT (e.SysBase.libNode.version >= 37);
  138.   Errors.Init;
  139.  
  140.   Init();
  141.   Main()
  142. END OCPrefs.
  143.  
  144. (***************************************************************************
  145.  
  146.   $Log: OCPrefs.mod $
  147. # Revision 2.1  1995/06/15  18:22:31  fjc
  148. # - Bumped version number
  149. #
  150. # Revision 1.6  1995/05/30  23:35:05  fjc
  151. # - Removed most command-line arguments that over-rode
  152. #   preferences settings.
  153. #
  154. # Revision 1.6  1995/05/19  16:14:44  fjc
  155. # - Completely rewritten as a GUI preferences editor. Removed
  156. #   all command line options other than the preferences file
  157. #   name.
  158. #
  159. # Revision 1.5  1995/04/02  14:08:10  fjc
  160. # - Added CODESIZE and CONSTSIZE arguments.
  161. #
  162. # Revision 1.4  1995/03/10  14:42:28  fjc
  163. # - Added new command line arguments: SMALLCODE, SMALLDATA,
  164. #   REGISTER, LARGECODE, LARGEDATA, NOREGISTER.
  165. # - Moved more strings to catalog.
  166. #
  167.   Revision 1.3  1995/01/26  00:17:17  fjc
  168.   - Release 1.5
  169.  
  170.   Revision 1.2  1995/01/09  14:08:13  fjc
  171.   - Removed command line arguments for icon names.
  172.   - No longer checks for the existence of directories when
  173.     parsing the command line.
  174.   - Added MakeIcon() to create icons for preferences files.
  175.   - Implemented Workbench arguments.
  176.  
  177.   Revision 1.1  1995/01/05  13:28:53  fjc
  178.   Initial revision
  179.  
  180. ***************************************************************************)
  181.